<?php
namespace Home\Controller;
use Think\Controller;
class AppController extends Controller {
    
    public function index(){
        //获取当前可用的App列表
        $recommenderId = I('recommenderId');

        if(!empty($recommenderId)) {
                $this->assign('recommenderId', $recommenderId);
        }
        $apps = M('App')->where(array('status' => 1))->select();
        $this->assign('apps', $apps);
        $this->display('down'); 
    }
    public function down()
    {
        //获取推荐人信息
        $recommenderId = I('recommenderId', null);
        //获取appId
        $appId = I('id', null);
        empty($appId) && $this->error('参数错误');
        $app = M('App')->where(array('id' => $appId))->find();
        empty($app) && $this->error('app信息获取失败');

        $os = I('os', null);
        empty($os) && $this->error('参数错误');
        $extName = '.apk';

        if($os === 'ios') {
                $extName = '.ipa';
        }

        $fileName = $app['app_name'] . '-' . $app['version'];

        if(!empty($recommenderId)) {
                $fileName .= '_' . $recommenderId . $extName;
        } else {
                $fileName .= $extName;
        }

        //获取app在服务器上的路径
        $file = $app['real_path'];
        $fileSize = bcdiv(filesize($file), 1024*1024, 2);
        //服务器返回的是一个流，可以下载任何文档
        header('Content-type: application/octet-stream');
        //按照字节大小返回数据，可有可无
        //header('Accept-Ranges: bytes');
        //返回的文件的大小，以字节为单位
        header('Accept-Length: ' . $fileSize . 'MB');
        //告诉浏览器以下载方式打开文件，中文文件名需要转码
        header('Content-Disposition: attachment; filename=' . $fileName); 

        //读取文件并输出
       	if(!empty($file) && is_file($file)) {
            $res = fopen($file, 'r');

            while(!feof($res)) {
                    echo fread($res, 1024);
            }

            M('App')->where(array('id' => $appId))->setInc('times', 1);

        } else {
            $this->error('下载出错');
        }

        fclose($res);
    }
    
}